<?php

namespace App\Http\Controllers\home;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
use Hash;

class DetailController extends Controller
{
    /**
    *   显示用户信息
    */
    public function getIndex()
    {
        $arr = DB::table('user')
        ->where('username','=',session('homeusername'))
        ->join('userdetail', 'user.id', '=', 'userdetail.uid')
        ->select('user.*', 'userdetail.*')
        ->get();

        $res = $arr[0]['birthday'];
        $res1 = explode('-', $res);
    return view('home.detail.index',['arr'=>$arr,'res1'=>$res1]);
    }

    /**
    *   修改用户提交过来的要修改的数据
    */
    public function postUpdate(Request $request)
    {

        // 接收数据
        $arr = $request -> except('_token','harea','hproper','hcity');
        
        // 处理数据
        $arr['birthday'] = $arr['nian'].'-'.$arr['yue'].'-'.$arr['ri'];

        $arr['age'] = date('Y',time()) - $arr['nian'] +1;

        // 判断图片是否修改
        if ($request->hasFile('photo')) {
            
            // 获取图片后缀
            $suffix = $request -> file('photo') -> getClientOriginalExtension();

            //设置图片名称 
            $name = date('YmdHis',time());

            // 判断图片后缀名
            $dell = ['jpg','png','gif','jpeg'];
            if (in_array($suffix,$dell)) {
                $array['photo'] = '/adminassets/photo/'.$arr['id'].'/'.$name.'.'.$suffix;
                $request -> file('photo') -> move('./adminassets/photo/'.$arr['id'].'/',$name.'.'.$suffix);
            }else{
               return back() -> with('error','文件格式不正确');
            }
        }

        if (empty($arr['nickname'])) {
            return redirect('/home/detail/index') -> with('error','昵称不能为空');
        }
        if (empty($arr['sex'])) {
            return redirect('/home/detail/index') -> with('error','性别不能为空');
        }
        if (empty($arr['site'])) {
            return redirect('/home/detail/index') -> with('error','居住地不能为空');
        }
        if (empty($arr['nian'])) {
            return redirect('/home/detail/index') -> with('error','生日不能为空');
        }
        if (empty($arr['yue'])) {
            return redirect('/home/detail/index') -> with('error','生日不能为空');
        }
        if (empty($arr['ri'])) {
            return redirect('/home/detail/index') -> with('error','生日不能为空');
        }
        if (empty($arr['uname'])) {
            return redirect('/home/detail/index') -> with('error','真实姓名不能为空');
        }
        if (empty($arr['phone'])) {
            return redirect('/home/detail/index') -> with('error','手机号不能为空');
        }
        if (empty($arr['email'])) {
            return redirect('/home/detail/index') -> with('error','邮箱不能为空');
        }
        $array['nickname'] = $arr['nickname'];
        $array['sex'] = $arr['sex'];
        $array['site'] = $arr['site'];
        $array['uname'] = $arr['uname'];
        $array['birthday'] = $arr['birthday'];
        $array['age'] = $arr['age'];
        $array['phone'] = $arr['phone'];
        $array['email'] = $arr['email'];

        // 修改数据
        $res = DB::table('userdetail') ->where('id',$arr['id']) -> update($array);
        
        // 判断返回的影响行数 把操作的结果压入session
        if ($res > 0) {
            return redirect('/home/detail/index') -> with('success','保存成功');
        }else{
            return back() -> with('error','保存失败');
        }
    }

   

    /**
    *   管理收获地址页面
    */
    public function getSite(Request $request)
    {
        $data = DB::table('sites') -> where('username','=',session('homeusername')) -> get();
        $data2 = DB::table('sites') -> where('username','=',session('homeusername')) -> count();
        // dd($data);

        return view('home.detail.site',['data'=>$data,'data2'=>$data2]);

    }
    public function getAaa($res){
        $res1 = DB::table('sites')
                -> where('id',$res)
                -> first();
        return $res1;
    }

    // 插入数据
    public function postInsert(Request $request)
    {
        // 数据处理
        $arr = $request -> except('_token');
        $arr['username'] = session('homeusername');
        $array['name'] = $arr['name'];
        $array['sites'] = $arr['sheng'].' '.$arr['shi'].' '.$arr['xian'].' '.$arr['sites'];
        $array['phone'] = $arr['phone'];
        $array['username'] = $arr['username'];


        $data = DB::table('sites') -> where('username','=',session('homeusername')) -> count();

        if ($data == 5) {

            return back() -> with('success','添加失败,地址条数已达上限！');
        }else{
            // 插入数据库
            $res = DB::table('sites') -> insert($array);

            // 判断返回的影响行数 把操作的结果压入session
            if ($res) {
                return redirect('/home/detail/site');
            }else{
                return back() -> with('success','添加失败');
            }
        }
        
    }

    // 删除操作
    public function getDelete($id)
    {
        // 删除对应id的数据
        $res = DB::table('sites') -> where('id','=',$id) -> delete();

        // 判断返回的影响行数 把操作的结果压入session
        if ($res > 0) {
            return redirect('/home/detail/site');
        }else{
            return back() -> with('error','删除失败');
        }
    }
    // 修改默认地址
    public function getUpdate($id)
    {
        // 查询default = 1 的语句，将default改成0，没有1返回的影响行数为0，不修改
        $arr = DB::table('sites') ->where('username','=',session('homeusername')) -> where('default','=',1) -> update(['default' => 0]);

        // 将对应id的表中default改为1
        $res = DB::table('sites') -> where('id','=',$id) -> update(['default' => 1]);

        // 判断返回的影响行数 把操作的结果压入session
        if ($res > 0 && $res) {
            return redirect('/home/detail/site');
        }else{
            return back() -> with('error','设为默认失败');
        }
    }

     // 编辑收获地址
    public function postUpdates(Request $request)
    {
        // dd($request -> all());
      

        // 提取参数
        $arr = $request -> except('_token');
        // dd($arr);
        $array['name'] = $arr['name'];
        $array['sites'] = $arr['sites'];
        $array['phone'] = $arr['phone'];
        $res = DB::table('sites') -> where('id','=',$arr['editid']) -> update($array);

        // 判断返回的影响行数 把操作的结果压入session
        if ($res > 0 && $res) {
            return redirect('/home/detail/site');
        }else{
            return back() -> with('error','设为默认失败');
        }
    }

    /**
    *   显示账户安全页面
    */
    public function getSafety1()
    {
        $data = DB::table('user') -> where('username','=',session('homeusername')) -> first();
        // dd($data);
        return view('home.detail.safety1',['data'=>$data]);
    }
    /**
    *   验证身份
    */
    public function postSelect(Request $request)
    {
        // 获取验证身份页面提交的信息
        $arr = $request -> except('_token');
        // dd($arr);

        // 查询数据表的信息
        $data = DB::table('user') -> where('username','=',session('homeusername')) -> first();

        // 解密密码  判断密码是否相等
        $res = Hash::check($arr['password'], $data['password']);
        // dd($res);

        if ($res) {
            return redirect('/home/detail/safety');
        } else {
            return back() -> with('success','密码不正确');
        }
    }

    /**
    *   密码修改页面
    */
    public function getSafety()
    {
        $data = DB::table('user') -> where('username','=',session('homeusername')) -> first();
        // dd($data);
        return view('home.detail.safety',['data'=>$data]);
    }

    /**
    *   密码修改
    */
    public function postUpdatess(Request $request)
    {
        // 获取提交的值
        $arr = $request -> except('_token');
        // dd($arr);
        // 判断验证码是否正确
        if (session('code') != $request -> input('code')) {
            return back() -> with('error','验证码不正确');
        } 

        // 密码加密
        $array['password'] = Hash::make($arr['repassword']);
        
        // 生成token值 账号激活用的随机字符
        $array['token'] = str_random(50);
        
        // 修改数据库
        $res = DB::table('user') -> where('username','=',session('homeusername')) -> update($array);

        if ($res) {
            return redirect('/home/detail/safety1') -> with('success','修改成功');
        } else {
            return back() -> with('error','修改失败');
        }
    }

    /**
    *   前台注销清除session
    */
    public function getLogout(Request $request)
    {
        // 清除所有session
        $request -> session() -> flush();

        // 返回登录页面
        return redirect('/');
    }

    /**
    *   余额显示页面
    */
    public function getConsume()
    {
        // 查询用户信息
        $arr = DB::table('user')
        ->where('username','=',session('homeusername'))
        ->join('userdetail', 'user.id', '=', 'userdetail.uid')
        ->select('user.*', 'userdetail.*')
        ->get();

        // 查询数据
        $data = DB::table('vault') -> where('uid',DB::table('user')->where('username',session('homeusername')) -> value('id')) -> get(); 
        // dd($data);
        return view('home.detail.consume',['data'=>$data,'arr'=>$arr]);
    }

    /**
    *   充值
    */
    public function postUpdatec(Request $request)
    {
       // 开启事务
        DB::beginTransaction();
        $res = DB::table('vault')
            -> where('uid',DB::table('user') -> where('username',session('homeusername')) -> value('id'))
            -> update(['money' => DB::table('vault') -> where('uid',DB::table('user') -> where('username',session('homeusername')) -> value('id')) -> value('money') + $request -> input('money')]);
        if ($res) {
            // 提交事务    
            DB::commit();
            return back() -> with('success','充值成功');
        } else {
            // 回滚事务
            DB::rollBack();
            return back() -> with('success','充值失败');
        }
    }

}
